using System;
using System.Collections;
using System.Diagnostics;
using Rhizome.Model;

namespace Rhizome.Contract
{
    public interface IActiveObject
    {
        Exception Exception { get; set; }

        bool Active { get; set; }
        IActiveObject Next { get; set; }
        IActiveObject Prev { get; set; }
        bool Sleeping { get; set; }
        int Timeout { get; set; }

        object StopMonitor { get; }

        /// <summary>
        ///   Sleeps ActiveObject for specified interval. 
        ///   (asks "sheduler" not no run next step for specified period)
        /// </summary>
        /// <param name = "interval">The interval (msec).</param>
        void Sleep(int interval);

        void Sleep();
        void WakeUp();
        void Step();
    }
}